home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / firefire.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-24  |  2.9 KB  |  90 lines

  1. 10  REM *****************************************************
  2. 20  REM ********************** FIREFIRE *********************
  3. 30  REM *****************************************************
  4. 40  REM *** COPYRIGHT   RICHARD K. COLLINS  1982  ***********
  5. 50  REM *****************************************************
  6. 60  REM *** PLEASE LEAVE THIS NOTICE IF YOU COPY THE PROGRAM
  7. 70  REM *** NOT FOR SALE OR DISTRIBUTION OTHER THAN THROUGH
  8. 80  REM *** CAPITAL PC USER'S GROUP.
  9. 90  REM *****************************************************
  10. 100  REM *** THE OBJECT OF THE GAME IS TO GET ALL THE ENEMY
  11. 110  REM *** IN THE LEAST AMOUNT OF TIME -- GOOD LUCK -- RKC
  12. 120  REM ****************************************************
  13. 130  REM *** A RIGHT ARROW STARTS YOUR MAN TO THE RIGHT
  14. 140  REM ***  A LEFT ARROW STARTS YOUR MAN TO THE LEFT
  15. 150  REM ***  A DOWN ARROW STOPS THE MAN
  16. 160  REM ***   AN UP ARROW FIRES
  17. 170  REM ****************************************************
  18. 180  DEFINT A-Z
  19. 190  DIM ENX(20),ENY(20)
  20. 200  WIDTH 80 : CLS : KEY OFF
  21. 210  GOSUB 760
  22. 220  REM ---------- CHECK COMMANDS
  23. 230  X$ = INKEY$
  24. 240  XX = FRE(X$)*0 : XX = FRE(X)*0 : REM CLEAR OUT MEMORY
  25. 250  IF X$ = "q" THEN END
  26. 260  IF LEN(X$) < 2 THEN 320
  27. 270  C = ASC(RIGHT$(X$,1))
  28. 280  IF C = 77 THEN XV = XVEL
  29. 290  IF C = 75 THEN XV = -XVEL
  30. 300  IF C = 72 THEN GOSUB 470
  31. 310  IF C = 80 THEN XV = 0
  32. 320  OX = X : X = X + XV
  33. 330  IF X > 79 THEN X = 79
  34. 340  IF X < 1 THEN X = 1
  35. 350  IF X <> OX THEN LOCATE 24,X,0 : PRINT CHR$(127); : LOCATE 24,OX,0 : PRINT " "; : OX = X
  36. 360  T = T + 1 : LOCATE 1,1,0 : PRINT USING "#####";T;
  37. 370  FOR I = 1 TO NE
  38. 380  XE = ENX(I) : YE = ENY(I) : YE = YE + 1
  39. 390  IF YE < 1 THEN 440
  40. 400  IF YE = 25 THEN GOSUB 710 : GOTO 450
  41. 410  IF SCREEN(YE,XE) = 127 THEN GOSUB 640 : GOTO 450
  42. 420  IF YE > 0 THEN LOCATE YE,XE,0 : PRINT CHR$(157);
  43. 430  IF YE > 1 THEN LOCATE YE-1,XE,0 : PRINT " ";
  44. 440  ENY(I) = YE
  45. 450  NEXT I
  46. 460  GOTO 230
  47. 470  REM ------------ FIRE A MISSILE
  48. 480  FOR Y = 23 TO 1 STEP -1
  49. 490  C = SCREEN(Y,X)
  50. 500  IF C <> 157 THEN LOCATE Y,X,0 : PRINT CHR$(15);: IF Y < 23 THEN LOCATE Y+1,X,0 : PRINT " ";
  51. 510  IF C = 157 THEN GOSUB 550 : GOTO 540
  52. 520  NEXT Y
  53. 530  LOCATE 1,X,0 : PRINT " ";
  54. 540  RETURN
  55. 550  REM ------------ BOOM, A HIT
  56. 560  LOCATE Y,X,0 : PRINT CHR$(15); :LOCATE Y+1,X,0 : PRINT " ";
  57. 570  FOR I = 1 TO 5 : SOUND 50 + RND*50,1 : NEXT I
  58. 580  LOCATE Y,X,0 : PRINT " ";
  59. 590  FOR I = 1 TO NE
  60. 600  IF (ENX(I) = X) AND (ENY(I) = Y) THEN E = I : GOTO 620
  61. 610  NEXT I
  62. 620  IF NE = 1 THEN GOTO 210 ELSE ENX(E) = ENX(NE) :ENY(E) = ENY(NE) :NE = NE - 1
  63. 630  RETURN
  64. 640  REM ------------ THEY GOT YOU
  65. 650  LOCATE 24,X,0 : PRINT CHR$(157); : LOCATE 23,X,0 : PRINT " ";
  66. 660  FOR I = 1 TO 10 : SOUND 750 - RND *250,1 :NEXT I
  67. 670  LOCATE 1,6,0 : FOR I = 6 TO 79 : PRINT " "; : NEXT I
  68. 680  LOCATE 1,10,0 : PRINT "  TOO BAD ! "
  69. 690  FOR I = 1 TO 3000 : NEXT I
  70. 700  GOTO 210
  71. 710  REM ------------ THEY MISSED YOU
  72. 720  SOUND 1000,1
  73. 730  LOCATE YE-1,XE,0 : PRINT " ";
  74. 740  ENY(I) = -5*RND : ENX(I) = 40 + 38*(RND - 0.5)
  75. 750  RETURN
  76. 760  REM ------------ SETUP GAME PARAMETERS ----------
  77. 770  XVEL = 1: LOCATE 1,10,0 :INPUT "enter number of simultaneous enemies  ",NE
  78. 780  IF NE = 0 THEN CLS : END
  79. 790  CLS : T = 0
  80. 800  FOR I = 1 TO NE
  81. 810  ENY(I) = -5*RND : ENX(I) = 40 + 38*(RND - 0.5)
  82. 820  NEXT I
  83. 830  LOCATE 25,2,0 : FOR I = 2 TO 79 : PRINT CHR$(178); : NEXT I
  84. 840  X = 40 : LOCATE 24,X,0 : PRINT CHR$(127);
  85. 850  LOCATE 1,1,0 : FOR I = 1 TO 79 : PRINT " "; : NEXT I
  86. 860  LOCATE 1,1,0 : PRINT "press any character to begin  ";
  87. 870  X$ = INKEY$ : IF X$ = "" THEN 870
  88. 880  LOCATE 1,1,0 : FOR I = 1 TO 79 : PRINT " "; : NEXT I
  89. 890  RETURN
  90.